A data exchange intermediary is often used in hardware designing to implement a data exchange process between different types of objects. FIFO in hardware is generally the data exchange intermediary between software and hardware for performing data reading and writing. For example, data is written to the FIFO by software, a write pointer is adjusted automatically by hardware; the data is read from the FIFO by the hardware when the FIFO is non-null and the read pointer is adjusted; an interruption required by the software may be generated by the hardware based on the state of the FIFO or the state of the operation.
In accordance with one technique of FIFO, a width of the written data often exceeds a bus width of the hardware, leading to multiple times of data writing by the software and multiple times of adjustment of the write pointer upon data writing. The software need to readback the data in the FIFO after receiving the interruption, and the pointer need to be readjusted as the current pointer has jumped. After the readback operation, the pointer is readjusted again. Therefore, the read pointer and the write pointer have to be changed frequently, and thus an error rate in reading and writing of the FIFO increases.